#!/bin/bash

# TCU项目文档生成脚本
# 功能：生成项目代码文档和API文档

echo "=== TCU项目文档生成 ==="

# 检查是否安装了doxygen
if command -v doxygen >/dev/null 2>&1; then
    echo "1. 生成Doxygen API文档..."
    doxygen Doxyfile
    if [ $? -eq 0 ]; then
        echo "   ✓ Doxygen文档生成成功: doc/html/index.html"
    else
        echo "   ✗ Doxygen文档生成失败"
    fi
else
    echo "1. 跳过Doxygen文档生成 (未安装doxygen)"
    echo "   安装命令: sudo apt install doxygen"
fi

# 生成函数列表文档
echo "2. 生成函数列表文档..."
cat > doc/functions.md << 'EOF'
# TCU项目函数列表

## 主要接口函数

### TCU设备管理
- `tcu_init()` - 初始化TCU设备
- `tcu_cleanup()` - 清理TCU设备资源
- `tcu_start()` - 启动TCU设备
- `tcu_stop()` - 停止TCU设备
- `tcu_get_state()` - 获取TCU设备状态
- `tcu_set_message_callback()` - 设置消息回调函数
- `tcu_set_connect_callback()` - 设置连接回调函数
- `tcu_set_disconnect_callback()` - 设置断开连接回调函数

### 配置管理
- `config_manager_init()` - 初始化配置管理器
- `config_manager_cleanup()` - 清理配置管理器
- `config_manager_load_file()` - 加载配置文件
- `config_manager_save_file()` - 保存配置文件
- `config_get_string()` - 获取字符串配置值
- `config_get_int()` - 获取整数配置值
- `config_get_bool()` - 获取布尔配置值
- `config_get_double()` - 获取浮点数配置值

### 日志系统
- `logger_init()` - 初始化日志系统
- `logger_cleanup()` - 清理日志系统
- `logger_set_level()` - 设置日志级别
- `logger_set_target()` - 设置日志输出目标
- `LOG_DEBUG()` - 调试日志宏
- `LOG_INFO()` - 信息日志宏
- `LOG_TEST()` - 测试日志宏
- `LOG_ERROR()` - 错误日志宏
- `LOG_WARN()` - 警告日志宏

## 内部函数

### TCU核心实现
- `load_device_config()` - 加载设备配置
- `load_mqtt_config()` - 加载MQTT配置
- `load_data_config()` - 加载数据配置

### 配置管理器实现
- `read_file_content()` - 读取文件内容
- `config_validate()` - 验证配置完整性
- `config_print()` - 打印配置内容

### 主程序
- `signal_handler()` - 信号处理函数
- `print_usage()` - 打印使用说明
- `main()` - 主程序入口

EOF

echo "   ✓ 函数列表文档生成成功: doc/functions.md"

# 生成代码统计信息
echo "3. 生成代码统计信息..."
cat > doc/code_stats.md << EOF
# TCU项目代码统计

## 文件统计
\`\`\`
$(find . -name "*.c" -o -name "*.h" | wc -l) 个源文件
$(find . -name "*.c" | wc -l) 个C源文件
$(find . -name "*.h" | wc -l) 个头文件
\`\`\`

## 代码行数统计
\`\`\`
$(find . -name "*.c" -o -name "*.h" | xargs wc -l | tail -1) 总行数
\`\`\`

## 各文件行数详情
\`\`\`
$(find . -name "*.c" -o -name "*.h" | xargs wc -l)
\`\`\`

## 函数统计
\`\`\`
$(grep -r "^[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]*(" include/ src/ | wc -l) 个函数
\`\`\`

## 注释覆盖率
\`\`\`
$(grep -r "//" include/ src/ | wc -l) 行注释
$(grep -r "/\*" include/ src/ | wc -l) 个块注释
\`\`\`

生成时间: $(date)
EOF

echo "   ✓ 代码统计信息生成成功: doc/code_stats.md"

# 创建文档目录索引
echo "4. 创建文档目录索引..."
cat > doc/README.md << 'EOF'
# TCU项目文档

## 文档列表

- [项目说明](../README.md) - 项目概述和使用指南
- [函数列表](functions.md) - 完整的函数接口列表
- [代码统计](code_stats.md) - 代码行数和统计信息
- [API文档](html/index.html) - Doxygen生成的API文档（如果可用）

## 快速导航

### 开发文档
- [从零开始开发指南](../../doc/从零开始开发指南.md)
- [TCU使用指南](../../doc/TCU使用指南.md)

### 配置文件
- [设备配置](../config/device_config.json)
- [MQTT配置](../config/mqtt_config.json)
- [数据配置](../config/data_config.json)

## 构建文档

如需重新生成文档，请运行：
```bash
./generate_docs.sh
```

## 注意事项

- 确保已安装doxygen以生成完整的API文档
- 文档会随着代码更新而更新
- 建议在每次重要更新后重新生成文档
EOF

echo "   ✓ 文档目录索引生成成功: doc/README.md"

echo ""
echo "=== 文档生成完成 ==="
echo "文档位置: doc/"
echo "主要文档:"
echo "  - README.md (项目说明)"
echo "  - functions.md (函数列表)"
echo "  - code_stats.md (代码统计)"
echo "  - html/index.html (API文档，如果可用)"
echo ""
echo "查看文档:"
echo "  cat doc/README.md"
echo "  cat doc/functions.md"
echo "  cat doc/code_stats.md"
